package com.oop.ch09;

import com.oop.ch06.Cat;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

public class LinkedListTest {
	//属性---没有setter和getter方法组，因为这种属性不对外提供访问，只是本类使用
	//成员变量
	static Cat cat1=new Cat("波斯猫", "翠花1", "雌性", 1, 3, 5.5);
	static Cat cat2=new Cat("波斯猫", "翠花2", "雌性", 1, 3, 5.5);
	static Cat cat3=new Cat("波斯猫", "翠花3", "雌性", 1, 3, 5.5);
	static Cat cat4=new Cat("波斯猫", "翠花4", "雌性", 1, 3, 5.5);
	
	public static void main(String[] args) {
		get();
	}
	
	//获取记录
	public static void get(){
		LinkedList<Cat> list=new LinkedList();
		list.addAll(Arrays.asList(cat1,cat2,cat3,cat4));
		
		//获取首行的记录
		// list.get(0);//使用List接口的方法来获取首行记录 效率高
		Cat cat1= list.getFirst();//使用LinkedList获取首行记录
		System.out.println(cat1);
		
		//获取最后一行的记录
		//Cat catLast=list.get(list.size()-1);//使用List接口的方法来获取最后一行记录 效率高
		Cat catLast=list.getLast();//使用LinkedList获取最后一行记录
		System.out.println(catLast);
	}
	
	//删除记录
	public static void remove(){
		LinkedList list=new LinkedList();
		list.addAll(Arrays.asList(cat1,cat2,cat3,cat4));
		
		// 删除首行记录
		list.removeFirst();//使用LinkedList实现删除首行
		
		//删除最后一行记录
		//list.remove(list.size()-1);//使用List接口实现删除最后一行记录
		list.removeLast();//使用LinkedList删除最后一行记录 效率高
		
		System.out.println(list);
	}
	
	//使用LinkedList的addLast给集合的最后一行添加一条数据
	//从效率上讲，使用LinkedList的addLast和addFirst,插入速度比较块
	public static void addLast() {
		LinkedList list=new LinkedList();
		list.addAll(Arrays.asList(cat1,cat2,cat3));
		
		list.addLast(cat4);//给最后一行添加数据 效率高
		//list.add(cat4);//给最后一行添加数据
		
		System.out.println(list);
		
	}
	
	//使用LinkedList的addFirst给集合的首行添加一条数据
	public static void addFirst() {
		LinkedList list=new LinkedList();
		
		//一次性插入多条数据
		list.addAll(Arrays.asList(cat1,cat2,cat3));
		// list.add(0,cat4);
		list.addFirst(cat4);//给首行插入一跳数据
		System.out.println(list);
	}
	
	public static void test() {
		List list=new ArrayList();
		list.add(cat1);
		list.add(cat2);
		list.add(cat3);
		list.add(0, cat4);//插入集合的首行位置
		System.out.println(list);
	}
}
